= PCC Example

This directory contains an example of using PCC to compile a C library "on-the-fly" and use the library in D.

Generally speaking, you will want to start by creating a file which will make use of PCC.  Let's call this `build.d`:

[,d]
----
#!/usr/bin/env dub
/+dub.sdl:
	name "build"
	dependency "pcc" repository="git+https://notabug.org/bluemoon/pcc.git" \
		version="9ad955346e74d1951da0d2811ec0de85ed4cbc16"
+/

import pcc;

void main() {
	auto compiler = new Compiler();
	compiler.addFile("libexample/example.c");
	compiler.compileTo("libexample.a");
}
----

NOTE: Paths are relative to the `dub.sdl` or `dub.json` file.

Our `libexample/example.c` file contains the following code:

[,c]
----
int compare_int(int lhs, int rhs) {
	if (lhs > rhs) {
		return -1;
	} else if (lhs < rhs) {
		return 1;
	}
	return 0;
}
----

To use this in D code, we need to create a binding to it:

[,d]
----
extern(C) int compare_int(int lhs, int rhs);
----

We can then use this as we'd expect:

[,d]
----
assert(compare_int(1, 2) == 1);
assert(compare_int(2, 1) == -1);
assert(compare_int(0, 0) == 0);
----
